package main

import "fmt"

// 结构体Human
type Human struct {
	name string
}

// 为Human绑定的方法——speak()
func (human *Human) speak() {
	fmt.Println("我的名字是：", human.name)
}

// Human和Candidate均以匿名属性的形式注入Student中
type Student struct {
	Human
	Candidate
}

// 考生结构体
type Candidate struct {
	score int
}

// 为Candidate绑定的方法——totalScore
func (candidate Candidate) totalScore() {
	fmt.Println("我的得分是：", candidate.score)
}

// 为Student绑定的方法——totalScore
func (student *Student) study() {
	fmt.Println("好好学习，天天向上")
}

func (student *Student) speak() {
	fmt.Println("我是一个学生", student.name)
}

func main5() {
	//创建Human实例
	h := Human{name: "熊大"}
	//创建Candidate实例
	c := Candidate{score: 95}

	// 将h和c以匿名属性的形式注入Student实例中
	student := Student{
		h,
		c,
	}

	// 调用Human的能力
	student.speak()
	// 调用Candidate的能力
	student.totalScore()
}
